class File {
    constructor(obj, maxSize = 10 * 1024 * 1024) {
        this.file = obj.file;
        this.fileName = obj.fileName;
        this.maxSize = maxSize;
        this.buffer = null;
        this.fileType = null;
    }

    check() {
        // 文件判空
        let file = this.file;
        if (!file) {
            return { success: false, msg: '没有接收到文件' };
        }
        // 判断文件格式是否为 base64 的指定格式
        if (file.startsWith('data:application/pdf;base64,')) {
            this.fileType = 'pdf';
        } else if (file.startsWith('data:application/msword;base64,')) {
            this.fileType = 'doc';
        } else if (file.startsWith('data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,')) {
            this.fileType = 'docx';
        } else {
            return { success: false, msg: '文件格式错误, 应是 doc, docx, pdf 格式的文件' };
        }
        // 提取 base64 数据部分 再次判空
        let base64Data = file.split(',')[1];
        if (!base64Data) {
            return { success: false, msg: '文件格式错误, 文件内容为空' };
        }
        // 将 base64 数据转换为 Buffer
        let buffer = Buffer.from(base64Data, 'base64');
        // 判断 file 这个base64字符串占用的字节是否超过 10M, 超过直接返回失败
        if (buffer.length > this.maxSize) {
            return { success: false, msg: "文件过大，请重新上传" };
        }
        // 将 buffer 赋值给 this.buffer
        this.buffer = buffer;
        return { success: true };
    }
}

module.exports = File;